package br.edu.utfpr.servidor.util.facade_;

import br.edu.utfpr.comum.BackupDTO;
import br.edu.utfpr.comum.RetornoValidacao;
import br.edu.utfpr.comum.Stream;
import br.edu.utfpr.comum.md5.Hash;
import br.edu.utfpr.servidor.util.ZipUtil;

import java.rmi.RemoteException;

public class Arquivo implements FacadeArquivo {

    RetornoValidacao rv = new RetornoValidacao();
    ZipUtil zip = new ZipUtil();

    public Arquivo() {
    }

    @Override
    public RetornoValidacao gravarArquivo(Stream stream, BackupDTO dto) throws RemoteException {
        //monta, grava e descompacta os dados
        rv = zip.gravarArquivo(stream, dto);

        if(!rv.isOk())
            return rv;

        //verifica a integridade dos dados
        rv = Hash.compare(stream.getMd5(), zip.getDestino(),dto);

        //adiciona log
        zip.addLog("Processo de backup finalizado com sucesso");

        return rv;
    }

    @Override
    public RetornoValidacao geraRestore(BackupDTO dto) {
        //faz a leitura e monta o stream com os dados para trafegar
        rv = zip.geraStream(dto);

        //adiciona log
        zip.addLog("Iniciando proecesso de restore");

        return rv;
    }
}
